package cn.lg.soar.flow.api.model;

import cn.lg.soar.flow.api.enums.AuditResultEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

/**
 * 完成任务
 * @author luguoxiang
 * @date 2023/6/27
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
@Getter
@Setter
@Schema(description = "完成任务")
public class CompleteTaskDTO extends BaseAuditDTO {

    /**
     * 任务id（任务id和流程实例id 有一个即可，任务id优先）
     */
    @Schema(description = "任务id")
    private String taskId;

    /**
     * 流程实例id（任务id和流程实例id 有一个即可，任务id优先）
     */
    @Schema(description = "流程实例id")
    private String procInstId;

    /**
     * 任务key
     */
    @Schema(description = "任务key")
    private String taskKey;

    /**
     * 审批结果
     */
    @Schema(description = "审批结果")
    private AuditResultEnum result;

    /**
     * 指定退回的节点key
     */
    @Schema(description = "指定退回的节点key")
    private String backNodeKey;

    public static CompleteTaskDTO pass(String taskId, String comments) {
        CompleteTaskDTO completeTaskDTO = new CompleteTaskDTO();
        completeTaskDTO.setResult(AuditResultEnum.pass);
        completeTaskDTO.setTaskId(taskId);
        completeTaskDTO.setComments(comments);
        return completeTaskDTO;
    }

    public static CompleteTaskDTO reject(String taskId, String comments) {
        CompleteTaskDTO completeTaskDTO = new CompleteTaskDTO();
        completeTaskDTO.setResult(AuditResultEnum.reject);
        completeTaskDTO.setTaskId(taskId);
        completeTaskDTO.setComments(comments);
        return completeTaskDTO;
    }

}
